// m

// 给定一个整数数组nums，找到峰值元素并返回其索引，必须实现时间复杂度为O(logn)的算法来解决此问题

// 峰值元素：指其值严格大于左右相邻值的元素
// 数组可能包含多个峰值，在这种情况下，返回任何一个峰值所在位置即可

// 思路：二分查找

function findPeakElement(nums) {
    let left = 0
    let right = nums.length - 1
    while (left < right) {
        let mid = left + Math.floor((right - left) / 2)
        if (nums[mid] < nums[mid + 1]) {
            // 右侧存在峰值
            left = mid + 1
        } else {
            // 左侧存在峰值
            right = mid
        }
    } 
    return left
}

let arr = [1, 2, 3, 4, 2, 5, 1]
console.log(findPeakElement(arr));